[小ネタ] Athena のテーブル, データカタログなどの概念がわからなかったのでまとめた
はじめに
おはようございます、もきゅりんです。
皆さん、Athena 使ってますか?
Athena は標準 SQL を使用して、主に Amazon S3 でのデータの直接分析を簡易化できる、サーバーレスのインタラクティブなクエリサービスですが、ドキュメントとブラックベルトを読んでいたら、データベース, テーブル, データカタログ, データソース, データセットといった、似たような概念がいっぱい出てきて、混乱してきたのでまとめてみました。
データベース, テーブル, データカタログ, データソース, データセット の区別
概念 | 中身 | 参考ページ |
---|---|---|
データベース | テーブルを論理的なグループにまとめるもの。データセットのメタデータおよびスキーマ情報のみを保持する。 | テーブル、データベース、およびデータカタログの理解 |
テーブル | AWS Glue データカタログに登録されるメタデータ (テーブル名、テーブル内の列名、各列のデータ型などのスキーマ) | テーブル、データベース、およびデータカタログの理解 |
データカタログ | メタデータを整理するためのシステム | データソースへの接続 |
データセット | データソースの元になるデータストアの一部または全て | データソースへの接続 |
データソース | データセットとそれを記述するデータカタログの組み合わせ | データソースへの接続 |
データセットについては明瞭な記述を見つけることができなかったのですが、おそらくリレーショナルデータベースを例にすると、テーブルなどデータベースの一部データを指していると認識しました。
また、データソースを明確に元のデータとは分別しているため、元のデータは (Glueの概念に合わせて) データストアとしました。
AWS Glue データカタログとデータカタログとテーブルについては下記のような図の関係になると思います。
ついでに Athena の全体イメージも図にしてみました。
(まだ Preview のサービスも合わせると、かなりできることが拡張されてきました。これはまたよく分からなくなってくる未来見えます...)
Athena の全体イメージ
最後に
あまり需要はなさそうな話ですが、他に混乱される方がいたら参考になると幸いです。
具体的な利用方法やクエリの最適化などチューニングについては弊社ブログを別途参考して頂ければと思います。
以上です。
どなたかのお役に立てば幸いです。